package com.wocai.jrt.orgadmin.employee.service.spi;

import java.util.List;

import com.wocai.jrt.admin.user.model.Roles;
import com.wocai.jrt.orgadmin.employee.bean.EmployeeDetailResBean;
import com.wocai.jrt.orgadmin.employee.model.Employee;
import com.wocai.jrt.orgadmin.employee.model.EmployeeBean;
import com.wocai.jrt.orgadmin.stats.bean.EmpStatsMapperReqBean;
import com.wocai.jrt.orgadmin.stats.bean.EmpStatsResBean;
import com.wocai.jrt.orgadmin.stats.bean.EmployeeDataSum;
import com.wocai.jrt.orgadmin.stats.bean.IndexStatsReqBean;
import com.wocai.jrt.orgadmin.stats.bean.TopFive;
import com.vteba.service.generic.MyBatisService;

/**
 * 员工相关的业务service接口。
 * @author yinlei
 * @date 2015-8-4 15:49:29
 */
public interface EmployeeService extends MyBatisService<Employee, EmployeeBean, String> {
	
	/**
	 * 保存用户，保存用户头像，维护用户角色。
	 * @param employee 用户信息
	 * @return 1成功，否则失败
	 */
	public int saveEmployee(Employee employee);
	
	/**
	 * 更新用户，同时维护用户和角色之间的关系
	 * @param employee 用户信息
	 * @return 1成功，否则失败
	 */
	public int updateEmployee(Employee employee);
	
	/**
	 * 删除用户，同时维护用户和角色之间的关系
	 * @param employee 用户信息
	 * @return 1成功，否则失败
	 */
	public int deleteEmployee(Employee employee);
	
	/**
	 * 设置用户角色
	 * @param employee 用户信息
	 * @return 1成功，否则失败
	 */
	public int setUserRole(Employee employee);
	
	/**
	 * 重置员工密码，还有回收员工设备
	 * @param employee 参数信息
	 * @return 1成功，否则失败
	 */
	public int updateInfo(Employee employee);
	
	public EmployeeDetailResBean getEmployeeDetailResBean(String userId);
	
	/**
	 * 查询员工的角色
	 * @param userIds 员工ids
	 * @return 角色list
	 */
	public List<Roles> queryUserRoles(List<String> userIds);

	/**
	 * 查询当前机构下的所有有理财师团队的理财师
	 * @param orgId
	 * @return
	 */
	public List<EmpStatsResBean> queryAllPlanner(EmpStatsMapperReqBean bean);
	
	List<TopFive> employeeTopFive(IndexStatsReqBean indexStatsReqBean);
	List<TopFive> employeeGroupTopFive(IndexStatsReqBean indexStatsReqBean);
	List<EmployeeDataSum> employeeDataSum(IndexStatsReqBean indexStatsReqBean);
	List<EmployeeDataSum> groupDataSum(IndexStatsReqBean indexStatsReqBean);

	public List<Employee> getGroupEmploee(String id);

	public int leave(Employee employee);
}
